package IDGen

import (
	"fmt"
	"sanguo/node/common/IDGen"
)

var gen *IDGen.IDGenerator
var soulgen *IDGen.IDGenerator

func Init(areaID uint16, serverID byte) bool {

	/*
			 *	todo: 对角色ID生成器做时间回调检测以防止机器时间回调生成重复角色ID
			 *
			 *  以areaID:serverID:role为key,IDGen.start.Unix()作为value
		     *  如果数据库中不存在表明合法，将IDGen.start.Unix()保存到数据库中
		     *  否则，
		     *  if IDGen.start.Unix > Db.value {
			 * 		合法,将IDGen.start.Unix保存到数据库中
			 *
			 *  } else if IDGen.start.Unix == Db.value {
			 *      丢弃当前生成器，sleep 1 秒之后重新创建生成器
		     *	} else {
			 *      出现时间回调，记录日志终止进程
		     *	}
	*/

	gen = IDGen.New(areaID, serverID)
	soulgen = IDGen.New(areaID, serverID)

	return gen != nil && soulgen != nil
}

func GenID() (uint64, error) {
	if nil == gen {
		return 0, fmt.Errorf("nil == gen")
	}
	return gen.Gen()
}

func SoulGenID() (uint64, error) {
	if nil == soulgen {
		return 0, fmt.Errorf("nil == soulgen")
	}
	return soulgen.Gen()
}
